Internet applications have become very sophisticated over the last few years providing a variety of web services to users, for example, on-line banking, share dealing, genealogy searches, on-line gaming, etc.
Internet applications have become widely available to a variety of users and the complexity of the internet applications has increased. This has led to a rise in network traffic and users experiencing an increase in the time required for a web page to be displayed within their browser window. This problem is further compounded by broadband Internet access not being accessible to the majority of Internet users. Hence, frustration is caused by a slow Internet dial-up connection, a high volume of network traffic, and complex internet applications that require a high amount of rendering before displaying in a browser window. In order to understand the problem further it is necessary to first look at the interaction between web servers and client devices.
To access a web page, a user running a web browser at a client device enters a Uniform Resource Locator (URL) into the web browser. The URL specifies a resource located at a web server. The web browser performs a lookup and sends the request to the web server, specified in the URL. When the web server receives the request, the web server locates the resource and determines the format and elements of the requested web page and constructs a text file according to the hypertext mark-up language (HTML) standard. The HTML file specifies the text to be written and the web page elements, such as URLs for image files that are to be displayed and the format in which they should be presented. The web server sends the requested resource in the form of an HTML file and any further data elements specified in the HTML code across the network to the client device. Therefore, each time a web browser requests a resource, whether the request is from a set of search results or a simple web page, the complete HTML file is sent across the network. Further, a complex web page layout requires a complex HTML code structure and in turn requires more HTML coding, which in turn maps to an increase in the size of the HTML file and the volume of bytes of data sent across the network.
To understand how a web page is displayed within a browser window a basic overview is given of HTML.
HTML is a mark-up language which specifies how a web page should be displayed in a browser window. HTML comprises elements and tags. Elements describe the structure of how a web page should be displayed. For example the “P” element represents a paragraph and a “B” element formats the content contained within the tags in a Bold type face.
An element has three parts: a start tag, the content, and an end tag. A tag is delimited by “<” and “>”. An end tag includes a “/” after the “<.” For example, the B element has a start tag, <B>, and an end tag, </B>. The start and end tags surround the content of the element. For example, <B>Hello World </B>.
Each element may further comprise an attribute. An attribute defines properties associated with the element. For example, an IMG element, which denotes an image, may comprise an SCR attribute providing the location of the image and an ALT attribute to give alternate text for browsers not capable of loading the image.
When the web browser requests a web page, the entire HTML file including graphics and downloadable files are sent in a reply message from the web server across the network to the client. The web browser receives the HTML file and renders the HTML file for display in the browser window. This process is repeated for each HTML file that is requested by the client device.
The request/reply interaction of a client and server architecture is determined by the Hypertext Transfer Protocol (HTTP), which defines the way in which web browsers interact with web servers. In HTTP version 1.0, the client requests one resource per HTTP request. Therefore, if a web page comprises five images, the web browser will issue a total of six requests to obtain the entire contents of the web page, i.e., one request for the web page and another five requests for each of the images. In use, browsers typically make several requests concurrently to reduce the overall delay to the user. Nevertheless, in order to display a requested web page on a client device, the web browser typically has to make several requests to the web server, which in turn increases network traffic.
Another contributing factor to a high volume of network traffic is the need to reload a web page. Typically, each time a user visits a web page, the user's browser must reload the web page by requesting the entire HTML code and the corresponding data elements. Although the content and the data elements on some web pages may change frequently, the content and the data elements of other web pages remain static. Therefore, even if the content and the data elements of a web page remain static, the content and data elements for the particular web page are sent from the server across the network to the browser application on the client machine.
In order to alleviate the problem of increased network traffic and the length of time that a web page takes to be displayed in a browser window, a number of solutions have been proposed.
One such solution is disclosed in US 2002/0032701 A1, incorporated herein by reference, in which the solution describes the independent update of individual display elements of a web page without reassembling the entire web page. US 2002/0032701 categorises a web page into individual objects that may be separately updated using the browser's local cache. Therefore US 2002/0032701 is a caching mechanism that may process each object on a web page separately and for each of the objects detect changes to the object on the web server. Hence, only those objects that have changed are requested from the server. Objects that have not changed are requested from the cache located on the client device. A disadvantage with this approach is that a user must have previously visited a web page for the comparison between data objects to take place to ensure that the same object is not sent to the client machine more than once.
Therefore there is a need for a method and system which reduces the volume of data transmitted from a server to a client device and alleviates the aforementioned problems.